/**
*  @class Dx11Renderer
*
*  @brief
*
*  @author William McVicar
*/

#pragma once

#ifndef __Dx11Renderer_H_INCLUDED__
#define __Dx11Renderer_H_INCLUDED__

#ifdef DX11

//  Library Includes
#pragma comment( lib, "d3d11.lib" )

//	SDK Includes
#include <d3d11.h>

//  Local Includes
#include "IRenderer.h"

//  Macros

//  Forward Declarations

//  Types

//  Constants

//  Prototypes

class Dx11Renderer : public IRenderer
{
   //Member Functions
public:

   Dx11Renderer();
   ~Dx11Renderer();

   	virtual HRESULT Initialise( HWND hWnd );
	virtual void Render();

protected: 

private: 

   //Member Variables
public:

protected: 

private: 

	D3D_DRIVER_TYPE			m_eDriverType;
	D3D_FEATURE_LEVEL		m_eFeatureLevel;

	ID3D11Device*			m_pDevice;
	ID3D11DeviceContext*	m_pImmediateContext;
	IDXGISwapChain*			m_pSwapChain;
	ID3D11RenderTargetView* m_pRenderTargetView;

};

#include "Dx11Renderer.inl"

#endif //DX11

#endif //__Dx11Renderer_H_INCLUDED__
